踏み台サーバーを利用したプライベートなWebサーバ接続をやってみた

踏み台サーバーを利用したプライベートなWebサーバ接続をやってみた

Clock Icon2024.08.02

はじめに

こんにちは、かつまたです。
この記事では、AWSを使ってパブリックサブネット配置の踏み台サーバーとプライベートサブネット配置のWebサーバーを構築し、最終的にWebページを表示するまでの手順を2章に分けて、画像とともに説明していきます。具体的には以下の構造を構築しました。
スクリーンショット 2024-08-01 11.38.16

1.踏み台サーバ編

1.1 VPC、サブネット作成

まず、VPCを作成します
1.AWSコンソールにログインし、「VPCを作成」をクリックします。
2.VPCの任意の名前(LT-katsumata-vpc)を入力し、IPv4 CIDRブロックを「10.0.0.0/16」に設定します。
3.「VPCを作成」をクリックします。
VPC

次にサブネットを作成します。

1.「サブネットを作成」をクリックします。
2.「VPC ID」に先ほど作成したVPCを選択します。
Public Subnet:
名前タグ: LT-katsumata-public1
IPv4 CIDRブロック: 10.0.0.0/24
LT用パブリックサブネット
Private Subnet:
名前タグ: LT-katsumata-private1
IPv4 CIDRブロック: 10.0.1.0/24
プライベートサブネット

3.「サブネットを作成」をクリックします。

1.2 ゲートウェイ、ルートテーブル、セキュリティグループ作成

インターネットゲートウェイの作成
1.「インターネットゲートウェイ」を選択し、「インターネットゲートウェイを作成」をクリックします。
2.名前(LT-katsumata-igw)を入力し、作成します。
3.作成したインターネットゲートウェイを選択し、「アクション」→「VPCにアタッチ」を選択します。
4.先ほど作成したVPCを選択し、アタッチします。

インターネットゲートウェイ

NATゲートウェイの作成
1.「NATゲートウェイ」を選択し、「NATゲートウェイを作成」をクリックします。
2.名前(LT-katsumata-nat)を入力し、Publicサブネットを選択します。
3.Elastic IPを割り当て、NATゲートウェイを作成します。

ルートテーブルの作成

Public Subnet用のルートテーブルを作成
1.「ルートテーブルを作成」をクリックし、VPCを選択します。
2.名前タグ(LT-katsumata-rtb-public)を入力します。
3.「ルートの編集」→「ルートの追加」で送信先を「0.0.0.0/0」、ターゲットを「インターネットゲートウェイ」に設定します。
4.「サブネットの関連付け」の「サブネットの編集」でPublicサブネットを選択します。

スクリーンショット 2024-08-01 13.44.57

Private Subnet用のルートテーブルを作成
1.Public Subnetと同様に作成します。
2.名前タグ(LT-katsumata-rtb-private)を入力します。
3.「ルートの編集」→「ルートの追加」で送信先を「0.0.0.0/0」、ターゲットを「NATゲートウェイ」に設定します。
4.「サブネットの関連付け」の「サブネットの編集」でPrivateサブネットを選択します。

スクリーンショット 2024-08-01 13.40.09

セキュリティグループの作成
踏み台サーバー用セキュリティグループ:
・名前: LT-katsumata-sg-BustionInstance-public
・VPCを選択
・インバウンドルール: SSH (ポート 22) を許可(管理者のIPアドレスからのアクセスを許可)

SG踏み台

Webサーバー用セキュリティグループ:
・名前: LT-katsumata-sg-private
・VPCを選択
・インバウンドルール: HTTP (ポート 80) およびSSH (ポート 22) を許可(踏み台サーバーからのアクセスを許可)

スクリーンショット 2024-08-01 13.35.48

1.3 インスタンス作成

踏み台サーバー
名前: LT-katsumata-bustion-public
AMI: Amazon Linux 2
インスタンスタイプ: t2.micro
キーペア: キーペアを作成(LT-katsumata.pem)
Public Subnetを選択し、Elastic IPを有効にします。
セキュリティグループ: LT-katsumata-sg-BustionInstance-publicを選択します。
「起動」をクリックし、インスタンスを起動します。

踏み台インスタンス1

踏み台インスタンス2ネット設定

Webサーバー
名前: LT-katsumata-web-private
AMI、インスタンスタイプ、キーペア: 踏み台と同じ
Private Subnetを選択し、Elastic IPを無効にします。
セキュリティグループ: LT-katsumata-sg-privateを選択します。
「起動」をクリックし、インスタンスを起動します。

ターゲットインスタンス1

ターゲットインスタンス2ネット設定

1.4 踏み台サーバーからの接続

1.WebサーバーにSSHで接続するためのキーファイルを踏み台サーバーに転送します。

bash
scp -i LT-katsumata.pem LT-katsumata.pem ec2-user@踏み台サーバーのパブリックIP:/home/ec2-user/

2.踏み台サーバーにSSHで接続します。

bash
ssh -i "LT-katsumata.pem" ec2-user@踏み台サーバーのパブリックIP

3.踏み台サーバーからWebサーバーにSSH接続します。

bash
ssh -i "LT-katsumata.pem" ec2-user@WebサーバーのプライベートIP

2.Webページ接続編

2.1 Apacheインストール

1.以下のコードを実行してApacheをインストールします。

bash
sudo yum update -y
sudo yum install httpd -y
sudo systemctl start httpd
sudo systemctl enable httpd

2.2 ターゲットグループ作成

1.ターゲットは「インスタンス」を選択し、ターゲットグループ名(LT-katsumata-targetgroup)を入力します。
2.VPCを選択します。
3.ターゲットグループに追加するインスタンスとしてWebサーバのインスタンスを選択して作成します。

ALBターゲットグループ

2.3 ALB作成

1.ALB作成前に別AZにpublicサブネットを作成します。
2.「ロードバランサーを作成」で「Application Load Balancer」を選択します。
3.名前(LT-katsumata-alb)を入力し、「インターネット向け」に設定します。
4.リスナー: HTTP (ポート 80)
5.VPCを選択し、アベイラビリティゾーンのpublicサブネットを選択します。
6.ALB用のセキュリティグループを選択します。
7.リスナーの設定でHTTPにおいて作成したターゲットグループを選択します。

ALB1
ALB2
ALB3

2.4 Webページ

Webブラウザでhttp://[ALBのDNS名]を開き、Webサーバにホストされている作成したindex.htmlのサイトが閲覧できる状態か確認します。
スクリーンショット 2024-08-01 13.29.48

終わりに

以上の操作で、踏み台サーバからWebサーバへの接続と、Webサーバ上のWebページ表示を確認することができました。
今回の構成の発展として
・サーバが単一のAZのみにあるため複数AZにインスタンス配置する
・データベースをAmazon RDSに移行し、マネージドデータベースを利用
・AutoScalingを用いてWebサーバーを負荷に合わせてスケーリングする構成を取る
・SSMとNATゲートウェイでよりコストとセキュリティを重視した構成
などが考えられるため、今後も手を動かして学習を続けて行きたいと考えています。

ご覧いただき、ありがとうございました。

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.